package cn.xinfei.xdecision.data.core.frame.executors.groovy.check;


import cn.xinfei.xdecision.data.core.vo.groovy.MixExpressionCheck;
import cn.xinfei.xdecision.data.core.vo.groovy.MixExpressionCheckResult;
import cn.xinfei.xdecision.data.core.vo.groovy.rule.RuleMixExpressionCheck;
import cn.xinfei.xdecision.data.core.vo.groovy.rule.RuleMixExpressionCheckResult;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

public interface ExpressionService {

	/**
	 * 表达式校验，可以通过MixExpressionCheck.mixExpressionTestDataList 传递一条或多条测试数据
	 * @param mixExpressionCheck 表达式参数
	 * @return 校验结果
	 */
	List<MixExpressionCheckResult> check(MixExpressionCheck mixExpressionCheck);

//
//	/**
//	 * 脚本规则校验
//	 */
//	List<RuleMixExpressionCheckResult> scriptRulecheck(RuleMixExpressionCheck mixExpressionCheck);
	/**
	 * 生成表达式测试 Excel 文件模版
	 * @param response HttpServletResponse
	 * @param expression 表达式字符串
	 * @param elementIds 表达式所含因子id
	 * @throws Exception
	 */
	void getTemplate(HttpServletResponse response, String id, String expression, String expressionResultType, List<String> elementIds) throws Exception;

	/**
	 * 上传包含测试数据的Excel文件，批量校验表达式
	 */
	void batchCheck(HttpServletResponse response,String id,MultipartFile file) throws Exception;
}
